home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / pluginy Firefox / 1146 / 1146.xpi / chrome / screengrab.jar / content / Prefs.js < prev    next >
Text File  |  2009-03-09  |  7KB  |  241 lines

  1. /*
  2. Copyright (C) 2004-2007  Andy Mutton
  3.  
  4. This program is free software; you can redistribute it and/or
  5. modify it under the terms of the GNU General Public License
  6. as published by the Free Software Foundation; either version 2
  7. of the License, or (at your option) any later version.
  8.  
  9. This program is distributed in the hope that it will be useful,
  10. but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12. GNU General Public License for more details.
  13.  
  14. You should have received a copy of the GNU General Public License
  15. along with this program; if not, write to the Free Software
  16. Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
  17.  
  18. Contact: andy@5263.org
  19. */
  20. screengrab.prefs = {
  21.     
  22.     PNG : "png",
  23.     JPEG : "jpeg",
  24.     
  25.     extensionPrefix : "extensions.screengrab.",
  26.     
  27.     includeTimeStampInFilename : "includeTimeStampInFilename",
  28.     imageFormat : "imageFormat",
  29.     imageQuality : "jpgImageQuality",
  30.     enableLogging : "enableLogOutput",
  31.     numberofGrabsTaken : "numberOfGrabs",
  32.     showIconInStatusBar: "showIconInStatusBar",
  33.     showInContextMenu : "showInContextMenu",
  34.     loggerPref : "loggerFilename",
  35.     showFileInDownloadsPref : "showFileInDownloads",
  36.     useBrowserDownloadDirPref : "useBrowserDownloadDir",
  37.     toolbarAddedOncePref : "toolbarAddedOnce",
  38.     
  39.     prefBranch : null,
  40.     
  41.     getBool: function(pref) {
  42.         return nsPreferences.getBoolPref(this.extensionPrefix + pref);
  43.     },
  44.     
  45.     getInt: function(pref) {
  46.         return nsPreferences.getBoolPref(this.extensionPrefix + pref);
  47.     },
  48.     
  49.     format : function() {
  50.         if (nsPreferences.getIntPref(this.extensionPrefix + this.imageFormat) == 0) {
  51.             return this.PNG;
  52.         } else {
  53.             return this.JPEG;
  54.         }
  55.     },
  56.     
  57.     formatMimeType : function() {
  58.         if (nsPreferences.getIntPref(this.extensionPrefix + this.imageFormat) == 0) {
  59.             return "image/png";
  60.         } else {
  61.             return "image/jpeg";
  62.         }
  63.     },
  64.     
  65.     formatQuality : function(mimeType) {
  66.         if (mimeType == "image/png") {
  67.             return "";
  68.         }
  69.         return 'quality=' + nsPreferences.getIntPref(this.extensionPrefix + this.imageQuality);
  70.     },
  71.     
  72.     showFileInDownloads : function() {
  73.         return nsPreferences.getBoolPref(this.extensionPrefix + this.showFileInDownloadsPref);
  74.     },
  75.     
  76.     defaultFileName : function() {
  77.         var filename = window.content.document.title;
  78.         if (nsPreferences.getBoolPref(this.extensionPrefix + this.includeTimeStampInFilename)) {
  79.             dt = new Date();
  80.             filename = filename + "_" + dt.getTime();
  81.         }
  82.         return filename;
  83.     },
  84.     
  85.     loggerFileName : function() {
  86.         if (window.navigator.userAgent.toLowerCase().indexOf("win") > -1) {
  87.             var defaultFileName = "C:\screengrab.log";
  88.         } else {
  89.             var defaultFileName = "/tmp/screengrab.log";
  90.         }
  91.         return nsPreferences.copyUnicharPref(this.extensionPrefix + this.loggerPref, defaultFileName);
  92.     },
  93.     
  94.     loggingEnabled : function() {
  95.         return nsPreferences.getBoolPref(this.extensionPrefix + this.enableLogging, false);
  96.     },
  97.     
  98.     /*
  99.      * The time to wait for Java applets to get ready after scrolling 
  100.      * them into position to capture them.
  101.      */
  102.     javaScrollWaitTime : function() {
  103.         var defaultTime = 100;
  104.         if (window.navigator.userAgent.toLowerCase().indexOf("mac") > -1) {
  105.             defaultTime = 400;
  106.         }
  107.         return nsPreferences.getIntPref(this.extensionPrefix + "javaScrollWaitMs", defaultTime);
  108.     },
  109.     
  110.     javaEnabled : function() {
  111.         if (!window.navigator.javaEnabled()) {
  112.             return false;
  113.         }
  114.         return nsPreferences.getBoolPref(this.extensionPrefix + "useJavaIfAvailable");
  115.     },
  116.     
  117.     incGrabCount : function() {
  118.         var numTaken = nsPreferences.getIntPref(this.extensionPrefix + this.numberofGrabsTaken, 0);
  119.         nsPreferences.setIntPref(this.extensionPrefix + this.numberofGrabsTaken, numTaken + 1);
  120.     },
  121.     
  122.     browserDownloadDir : function() {
  123.         return nsPreferences.copyUnicharPref("browser.download.dir");
  124.     },
  125.     
  126.     useBrowserDownloadDir : function () {
  127.         return nsPreferences.getBoolPref(this.extensionPrefix + this.useBrowserDownloadDirPref);
  128.     },
  129.     
  130.     toolbarAddedOnce: function() {
  131.         return this.getBool(this.toolbarAddedOncePref);
  132.     },
  133.     
  134.     setToolbarAddedOnce: function() {
  135.         return nsPreferences.setBoolPref(this.extensionPrefix + this.toolbarAddedOncePref, true);
  136.     },
  137.     
  138.     refreshContextMenu : function() {
  139.         if (nsPreferences.getBoolPref(this.extensionPrefix + this.showInContextMenu, true)) {
  140.             this.show("screengrab-context-menu");
  141.             this.show("screengrab-context-separator");
  142.         } else {
  143.             this.hide("screengrab-context-menu");
  144.             this.hide("screengrab-context-separator");
  145.         }
  146.     },
  147.     
  148.     refreshMenuChoices : function() {
  149.         if (!this.javaEnabled()) {
  150.             this.hide("pop-grabWindow");
  151.         } else {
  152.             this.show("pop-grabWindow");
  153.         }
  154.     },
  155.  
  156.     refreshShortcuts : function() {
  157. //        setShortcut("screengrab-key-copy-complete", "c", "control shift");
  158. //        setShortcut("screengrab-key-copy-visible", "v", "control shift");
  159. //        setShortcut("screengrab-key-save-complete", "d", "control shift");
  160. //        setShortcut("screengrab-key-save-visible", "f", "control shift");
  161.     },
  162.     
  163.     setShortcut : function(id, key, modifiers) {
  164.         var keyElem = document.getElementById(id);
  165.         keyElem.key = key;
  166.         keyElem.modifiers = modifiers;
  167.     },
  168.     
  169.     refreshStatusbar : function() {
  170.         if (nsPreferences.getBoolPref(this.extensionPrefix + this.showIconInStatusBar), true) {
  171.             this.show("screengrab_panel");
  172.         } else {
  173.             this.hide("screengrab_panel");
  174.         }
  175.     },
  176.     
  177.     observe : function(aSubject, aTopic, aData) {
  178.         if (aTopic != "nsPref:changed") return;
  179.         
  180.         sg.debug("Observed change in " + aData);
  181.         switch (aData) {
  182.             case this.showIconInStatusBar: 
  183.                 this.refreshStatusbar();
  184.                 break;
  185.             case this.showInContextMenu:
  186.                 this.refreshContextMenu();
  187.                 break;
  188.         }
  189.         refreshShortcuts();
  190.     },
  191.     
  192.     register: function() {
  193.         var prefService = Components.classes["@mozilla.org/preferences-service;1"]
  194.                                     .getService(Components.interfaces.nsIPrefService);
  195.         this.prefBranch = prefService.getBranch(this.extensionPrefix);
  196.         this.prefBranch.QueryInterface(Components.interfaces.nsIPrefBranch2);
  197.         this.prefBranch.addObserver("", this, false);
  198.     },
  199.     
  200.     unregister: function() {
  201.         if (!this.prefBranch) return;
  202.         this.prefBranch.removeObserver("", this);
  203.     },
  204.     
  205.     hide : function(elementId) {
  206.         try {
  207.             document.getElementById(elementId).style.display = "none";
  208.         } catch (error) {
  209.             sg.error(error + ":" + elementId);
  210.         }
  211.     },
  212.     
  213.     show : function(elementId) {
  214.         try {
  215.             document.getElementById(elementId).style.display = "";
  216.         } catch (error) {
  217.             sg.error(error + ":" + elementId);
  218.         }
  219.     },
  220.     
  221.     configuratePrefs : function() {
  222.         screengrab.prefs.register();
  223.         setTimeout(function() {
  224.             screengrab.prefs.refreshContextMenu();
  225.             screengrab.prefs.refreshStatusbar();
  226.             screengrab.prefs.refreshMenuChoices();
  227.             screengrab.prefs.refreshShortcuts();
  228.         }, 100);
  229.     },
  230.     
  231.     instantApply: function() {
  232.         return nsPreferences.getBoolPref("browser.preferences.instantApply");
  233.     },
  234.     
  235.     openPrefs:function() {
  236.         window.openDialog("chrome://screengrab/content/preferences.xul", "screengrab-options-dialog", "toolbar,centerscreen,chrome,modal,resizable" + this.instantApply() ? ",dialog=no" : "");
  237.     }
  238. }
  239. window.addEventListener("load", function() {
  240.     screengrab.prefs.configuratePrefs();
  241. }, false);